package com.cike.sparkstudy.sql.java;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.SQLContext;

public class DataFrameOperation {
    public static void main(String[] args){
        SparkConf conf = new SparkConf().setMaster("local").setAppName("DataFrameOperation");
        JavaSparkContext sc = new JavaSparkContext(conf);
        SQLContext sqlContext = new SQLContext(sc);

        DataFrame jsonDF = sqlContext.read().json("/developerCodes/test/students.json");

        //展示jsonDF数据
        System.out.println("展示JsonDF数据");
        jsonDF.show();
        //输出元数据
        System.out.println("输出元数据");
        jsonDF.printSchema();
        // 查询某列所有的数据
        System.out.println("查询某列所有的数据");
        jsonDF.select("name").show();
        // 查询某几列所有的数据，并对列进行计算
        System.out.println("查询某几列所有的数据，并对列进行计算");
        jsonDF.select(jsonDF.col("name"),jsonDF.col("age").plus(1)).show();

        // 根据某一列的值进行过滤
        System.out.println("根据某一列的值进行过滤");
        jsonDF.filter(jsonDF.col("age").gt(17)).show();

        // 根据某一列进行分组，然后进行聚合
        System.out.println("根据某一列进行分组，然后进行聚合");
        jsonDF.groupBy(jsonDF.col("age")).count().show();


    }
}
